www.gusucode.com > LTE基带收发仿真系统matlab源码程序 > LTE baseband simulation/turbo_encoder.m
function en_output = turbo_encoder(c) % turbo 编码函数,编码器参照 36.212 V8.6.0 % 码率为1/3,两个RSC编码器,附加输出12个尾比特 % c为输入的信息比特,en_output为编码输出的信息 % % Author: 程式小组(徐萌 张妙 张晓庆) % Date: 2010-06-20 % ======================================================== % ======================== 独立测试函数时使用以下参数 ======= % clear % clc % input = randn(1,96)>0; % 编码生成器 % ========================================================= g = [ 1 0 1 1; 1 1 0 1 ]; Ki = length(c); % 信息比特数 alphaInternal = internal_leaver_par(Ki); [n,K] = size(g); m = K - 1; L_info = length(c); L_total = L_info + m; en_output = zeros(3,L_info+4); % turbo编码输出3流数据,每流后加4位终止比特 %得到第一个RSC的编码输出 output1 = rsc_encode(g,c,1); % y的第一行为RSC1输出的系统比特 % 第二行为RSC1输出的校验比特 % 第三行为RSC2输出的校验比特 y(1,:) = output1(1:2:2*L_total); % 系统比特 xk y(2,:) = output1(2:2:2*L_total); % 校验比特1 zk % 对c交织,输入第二个rsc input1 = c(alphaInternal); %得到第二个RSC的编码输出 output2 = rsc_encode(g,input1, 1 ); y(3,:) = output2(2:2:2*L_total); % 校验比特2 zk' % Turbo编码的尾比特处理 按如下特定顺序排列 依据TS 36.212 5.1.3.2.2 tailBits = transpose([output1(2*L_total-5:2:2*L_total); output1(2*L_total-4:2:2*L_total); output2(2*L_total-5:2:2*L_total); output2(2*L_total-4:2:2*L_total)]); tailBits = tailBits([1 4 2 5 3 6 7 10 8 11 9 12]); tailBits = reshape(tailBits,3,4); en_output(:,1:end-4)=y(:,1:end-3); en_output(:,end-3:end) = tailBits; % 正负调制: +1/-1 % en_output = 2 * en_output - ones(size(en_output));